package cn.edu.zufe.mjt.manualarraylist;


/**
 * @author 蒙锦涛
 * @date 2025/5/14
 * @description 一个自定义的List接口
 */
public interface List<E> extends Iterable<E> {

    /**
     * 添加元素到列表中
     * @param element 要添加的元素
     */
    void add(E element);

    /**
     * 添加元素到指定位置
     * @param element 要添加的元素
     * @param index 要添加的位置
     */
    void add(E element, int index);

    /**
     * 删除指定位置的元素
     * @param index 要删除的位置
     * @return 被删除的元素
     */
    E remove(int index);

    /**
     * 删除指定元素
     * @param element 要删除的元素
     * @return 是否删除成功
     */
    boolean remove(E element);

    /**
     * 设置指定位置的元素
     * @param index 要设置的位置
     * @param element 要设置的元素
     * @return 返回旧的元素
     */
    E set(int index, E element);

    /**
     * 获取指定位置的元素
     * @param index 要获取的位置
     * @return 指定位置的元素
     */
    E get(int index);

    /**
     * 获取列表的大小
     * @return 列表的大小
     */
    int size();

}
